গুয়াভা (Guava) হল একটি জনপ্রিয় ওপেন-সোর্স জাভা লাইব্রেরি, যা বিভিন্ন ইউটিলিটি ক্লাস এবং ফিচার সরবরাহ করে। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হল Retryer, যা ব্যর্থ (failed) অপারেশন পুনরায় চালানোর জন্য ব্যবহৃত হয়।
Retryer ফিচারটি সাধারণত Google Guava সরাসরি সরবরাহ করে না। তবে, Failsafe বা Resilience4j-এর মতো তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করে Retry মেকানিজম সহজেই ইমপ্লিমেন্ট করা যায়। নিচে Retryer-এর মাধ্যমে একটি ব্যর্থ অপারেশন পুনরায় চেষ্টা করার উদাহরণ দেখানো হলো:
উদাহরণ: Retryer ইমপ্লিমেন্টেশন
import com.github.rholder.retry.*;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class GuavaRetryExample {
public static void main(String[] args) {
// Retryer তৈরি করা
Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder()
.retryIfResult(result -> result == false) // রেজাল্ট false হলে পুনরায় চেষ্টা করবে
.retryIfException() // এক্সেপশন হলে পুনরায় চেষ্টা করবে
.withWaitStrategy(WaitStrategies.fixedWait(2, TimeUnit.SECONDS)) // ২ সেকেন্ড অপেক্ষা করবে প্রতিটি রিট্রাইয়ের আগে
.withStopStrategy(StopStrategies.stopAfterAttempt(5)) // সর্বোচ্চ ৫ বার চেষ্টা করবে
.build();
// Callable অপারেশন যা পুনরায় চেষ্টা করা হবে
Callable<Boolean> callable = () -> {
System.out.println("অপারেশন চলছে...");
if (Math.random() < 0.7) { // ৭০% সম্ভাবনায় অপারেশন ব্যর্থ হবে
throw new RuntimeException("অপারেশন ব্যর্থ হয়েছে");
}
return true; // সফল হলে true রিটার্ন করবে
};
// Retryer চালানো
try {
Boolean result = retryer.call(callable);
System.out.println("অপারেশন সফল: " + result);
} catch (RetryException | ExecutionException e) {
System.out.println("পুনরায় চেষ্টা করেও ব্যর্থ: " + e.getMessage());
}
}
}
কাজের প্রক্রিয়া:
- Retryer তৈরি করা:
- ব্যর্থ ফলাফল বা এক্সেপশনের ক্ষেত্রে পুনরায় চেষ্টা করার কন্ডিশন নির্ধারণ করা হয়।
- পুনরায় চেষ্টার আগে অপেক্ষার সময় এবং সর্বাধিক চেষ্টার সংখ্যা নির্ধারণ করা হয়।
- Callable অপারেশন:
- এটি এমন একটি ফাংশন যা Retryer দ্বারা পুনরায় চালানো হবে।
- Retryer চালানো:
retryer.call(callable)দ্বারা অপারেশন চালানো হয়।- যদি অপারেশন ব্যর্থ হয় এবং নির্ধারিত শর্ত পূরণ হয়, তবে Retryer পুনরায় চেষ্টা করবে।
প্রধান সুবিধা:
- ব্যর্থ অপারেশনের ক্ষেত্রে স্বয়ংক্রিয় পুনরায় চেষ্টা।
- WaitStrategy এবং StopStrategy ব্যবহার করে সহজেই কাস্টমাইজ করা যায়।
- এক্সেপশন হ্যান্ডলিংয়ের জন্য কার্যকর সমাধান।
আপনার নির্দিষ্ট প্রয়োজনে ফিচারটি আরও কাস্টমাইজ করা সম্ভব।
Content added By
Read more